package com.lin.maker.generator;

import cn.hutool.core.io.FileUtil;

import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.nio.file.attribute.PosixFilePermission;
import java.nio.file.attribute.PosixFilePermissions;
import java.util.Set;

public class ScripyGenerator {
    public static void doGenerate(String outPath,String jarPath){
//
//        // 确保 outPath 是一个文件路径，而不是目录路径
//        File outFileLinux = new File(outPath);
//
//        // 如果 outPath 是一个目录，使用该目录创建一个实际文件
//        if (outFileLinux.isDirectory()) {
//            outFileLinux = new File(outPath + File.separator + "generate"); // 你可以修改这里的文件名
//        }
//
//        //直接写入Linux脚本文件
        StringBuilder sb = new StringBuilder();
//        //#!/bin/bash
//        //java -jar target/lin-code-generate-basic-1.0-SNAPSHOT-jar-with-dependencies.jar "$@"
//        sb.append("#!/bin/bash\n");
//        sb.append(String.format("java -jar %s \"$@\"",jarPath)).append("\n");
//        // 如果文件所在目录不存在，创建目录
//        if (!outFileLinux.getParentFile().exists()) {
//            outFileLinux.getParentFile().mkdirs();
//        }
//        FileUtil.writeBytes(sb.toString().getBytes(StandardCharsets.UTF_8), outFileLinux);
//        //注入Linux可执行文件
//        try {
//            Set<PosixFilePermission> permissions = PosixFilePermissions.fromString("rwxrwxrwx");
//            Files.setPosixFilePermissions(Paths.get(outPath), permissions);
//        } catch (Exception e) {
//
//        }
        //Windos脚本文件
        //@echo off
        //java -jar target/lin-code-generate-basic-1.0-SNAPSHOT-jar-with-dependencies.jar %*
        File outFileWindow = new File(outPath);
        // 如果 outPath 是一个目录，使用该目录创建一个实际文件
        if (outFileWindow.isDirectory()) {
            outFileWindow = new File(outPath + File.separator + "generate"); // 你可以修改这里的文件名
        }
        sb.append("@echo off\n");
        sb.append(String.format("java -jar %s %%*",jarPath)).append("\n");
        // 如果文件所在目录不存在，创建目录
        if (!outFileWindow.getParentFile().exists()) {
            outFileWindow.getParentFile().mkdirs();
        }
        FileUtil.writeBytes(sb.toString().getBytes(StandardCharsets.UTF_8), outFileWindow + ".bat");
    }
}
